<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数据类型</title>
<script>
window.onload = function () {

    /**
     
      typeof 返回数据类型的小写字符串表达法,用来判断是否是string number bool undefined function，不能区分出null Array和Object
      instanceof 判断引用类型对象具体类型
      === 不做数据类型转换，判断完全相等,能用来判断是否是undefined null
     
     基本数据类型
         String
         Number
         boolean
         undefined
         null

     引用数据类型
         Object 任意一个对象都是Object
         Function 特别的对象，可以执行
         Array 特别的对象，属性是数字下标


     undefined 和 null 的区别

        undefined代表定义了但未赋值
        null 代表值为空，初始化时赋值为空表明一个变量将被赋值为对象，程序结束时赋值为空，使对象被垃圾回收

     数据的类型
         基本类型
         对象类型

     变量的类型
         基本类型
         引用类型

     变量内存占用
         栈：全局变量，局部变量
         堆：对象

     */

    
    var a;

    console.log(typeof a);
    
    a = 4;
    console.log(typeof a);

    a = 'hello';
    console.log(typeof a);

    a = null;
    console.log(typeof a);

    a = function () {

    };
    console.log(typeof a);

    a = {};
    console.log(typeof a);

    a = [];
    console.log(typeof a);


    var obj = {};
    console.log(obj instanceof Object);
    obj = [];
    console.log(obj instanceof Array);

    obj = function () {

    };
    console.log(obj instanceof Function);
}
</script>
</head>
<body>

</body>
</html>
